<?php

namespace app\admin\controller;

use think\Controller;
use think\Request;
use app\admin\model\Manager as ManagerModel;
use think\Validate;

class Manager extends Base
{
    /**
     * 显示资源列表
     *
     * @return \think\Response
     */
    public function index()
    {
        $list = managerModel::select();
        return $this->fetch('index', ['list' => $list]);
    }

    /**
     * 显示创建资源表单页.
     *
     * @return \think\Response
     */
    public function create()
    {


        return view();
    }

    /**
     * 保存新建的资源
     *
     * @param  \think\Request  $request
     * @return \think\Response
     */
    public function save(Request $request)
    {
        //接收view传入的数据
        $param = input();
        //验证规则
        $rule = [
            'username|用户名' => 'require',
            'nickname|昵称'   => 'require',
            'password|密码'   => 'require|length:6,20',
            'email|邮箱'      => 'require|email',
        ];
        //定义错误提示信息
        $msg = [
            'username.require' => '用户名不能为空',
            'nickname.require' => '昵称不能为空',
            'password.require' => '密码不能为空',
            'password.float'   => '密码长度为6-20',
            'email.require'    => '邮箱不能为空',
            'email.email'      => '邮箱格式错误'
        ];
        //调用控制器的validate方法
        $validate = $this->validate($param, $rule, $msg);
        if($validate !== true)
        {
            //验证失败
            $this->error($validate);
        }
        //将密码以md5的方式加密
        $param['password'] = md5($param['password']);
        //将数据添加到数据库
        $res = managerModel::create($param, true);
        if($res) {
            $this->success('用户创建成功!', 'manager/index');
        } else {
            $this->error('用户创建失败');
        }
    }

    /**
     * 显示指定的资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function read($id)
    {

    }

    /**
     * 显示编辑资源表单页.
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function edit($id)
    {
        $info = managerModel::find($id);
        return view('edit', ['info' => $info]);
    }

    /**
     * 保存更新的资源
     *
     * @param  \think\Request  $request
     * @param  int  $id
     * @return \think\Response
     */
    public function update(Request $request, $id)   //检查输入数据和数据库比对
    {
        //接收数据
        $data = $request->param();
        //定义规则
        $rule = [
            'username' =>'require',
            'email'    => 'require|email',
            'status'   => 'require',
        ];
        //定义错误信息
        $msg = [
            'username.require' => '昵称不能为空',
            'email.require' => '邮箱不能为空',
            'email.email' => '邮箱格式不符合',
            'status.require' => '身份不能为空'
        ];
        //实例化验证类
        $validate = new \think\Validate($rule, $msg);
        if(!$validate->check($data)){
            //验证失败
            $error = $validate->getError();
            $this->error($error);
        }
        //密码以md5方式加密
        $data['password'] = md5($data['password']);
        //修改数据表
        managerModel::update($data, ['id' => $id], true);
        //跳转页面
        $this->success('操作成功', 'manager/index');
    }

    /**
     * 删除指定资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function delete($id)
    {
        //删除用户
        $res = managerModel::destroy($id);
        if ($res) {
            $this->success("id=$id 的用户成功删除");
        } else {
            $this->error("参数错误");
        }
    }

    /**
     * 重置账号密码
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function resetpw($id)
    {
        //重置密码
        $res = managerModel::where('id', $id)->update(['password' => md5('123456')]);  //将密码重置为123456md加密的方式
        if ($res) {
            $this->success("密码重置成功");
        } else {
            $this->error("参数错误");
        }
    }
}
